package infoserver;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.*;


/**
 * Hier wordt het dialog aangemaakt voor inzage van een log
 * @author Erik Uitenbroek
 * @since 24-04-2012
 */
public class LogDialog  extends JDialog implements ActionListener{
    
    //Aanmaken variabelen voor het design
    private JTextArea fieldLog = new JTextArea(1,1);
    private JButton buttonClose = new JButton("Close");
    private String path;
    private String fileName;
    private BufferedReader br;
    private ArrayList<String> str;
    
    
    //Constructor
    public LogDialog(JFrame frame, String path, String fileName){
        //Standaard informatie toevoegen
        super(frame);
        setTitle(fileName);
        setLayout(null);
        setSize(500,500);
        setResizable(false);
        
        this.path = path;
        this.fileName = fileName;
        
        File file = new File(path, fileName);
        try{
            br = new BufferedReader(new FileReader(file));
            fieldLog.setText(getText());
        }
        catch(IOException e){
            System.out.println(e.getMessage());
        }
        
        //Hier staan de properties van het tekstveld waarin de loggegevens worden weergeven
        fieldLog.setEditable(false);
        fieldLog.setLineWrap(true);
        fieldLog.setWrapStyleWord(true);
        fieldLog.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); //border wordt aangemaakt voor de scrollbar
        
        //Hier wordt de scrollbar aangemaakt, het textfield wordt aan de scrollbar toegevoegd en daarna wordt deze aangemaakt
        JScrollPane scrollBar = new JScrollPane(fieldLog);
        scrollBar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scrollBar.setBounds(10, 15, 480, 400);
        add(scrollBar);
        
        //De knop om het geopende dialoog te sluiten wordt hier toegevoegd
        buttonClose.setBounds(200, 420, 80, 30);
        add(buttonClose);
        
        //Toevoegen van de actionlisteners
        buttonClose.addActionListener(this);
    }
    
    /**
    * Haalt de tekst op uit het meegegeven log bestand
    * @author Erik Uitenbroek
    * @since 05-05-2011
    */
    public String getText(){
        String all = "";
        try{
        String thisLine;
        int i = 0;
        while((thisLine = br.readLine()) != null){
            all += thisLine + "\n";
        }
        br.close();
        }
        catch(IOException e){
            System.out.println(e.getMessage());
        }
        return all;
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == buttonClose){ //als er op de knop "Close" is gedrukt dan zal het scherm sluiten
            setVisible(false);
        }
    }
}
